package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.system.domain.TrainingCadetTeacherNotes;
import com.ruoyi.system.domain.TrainingCadetTeacherNotesCount;

/**
 * 跟师笔记Service接口
 * 
 * @author dp
 * @date 2023-11-27
 */
public interface ITrainingCadetTeacherNotesService 
{
    /**
     * 查询跟师笔记
     * 
     * @param notesId 跟师笔记主键
     * @return 跟师笔记
     */
    public TrainingCadetTeacherNotes selectTrainingCadetTeacherNotesByNotesId(Long notesId);

    /**
     * 查询跟师笔记列表
     * 
     * @param trainingCadetTeacherNotes 跟师笔记
     * @return 跟师笔记集合
     */
    public List<TrainingCadetTeacherNotes> selectTrainingCadetTeacherNotesList(TrainingCadetTeacherNotes trainingCadetTeacherNotes);

    /**
     * 查询跟师笔记合计列表
     * @param submitBegin
     * @param submitEnd
     * @param baseId
     * @param notesStatus
     * @param cadetId
     * @param cadetName
     * @return
     */
    public List<TrainingCadetTeacherNotesCount> selectTrainingCadetTeacherNotesCount(
            String submitBegin, String submitEnd, String baseId, String notesStatus, Long cadetId, String cadetName);

    /**
     * 根据条件获取跟师笔记列表
     * @param submitBegin
     * @param submitEnd
     * @param baseId
     * @param cadetId
     * @param notesStatus
     * @return
     */
    public List<TrainingCadetTeacherNotes> getNoteList(String submitBegin, String submitEnd, String baseId, String cadetId, String notesStatus);

    /**
     * 新增跟师笔记
     * 
     * @param trainingCadetTeacherNotes 跟师笔记
     * @return 结果
     */
    public int insertTrainingCadetTeacherNotes(TrainingCadetTeacherNotes trainingCadetTeacherNotes);

    /**
     * 修改跟师笔记
     * 
     * @param trainingCadetTeacherNotes 跟师笔记
     * @return 结果
     */
    public int updateTrainingCadetTeacherNotes(TrainingCadetTeacherNotes trainingCadetTeacherNotes);

    /**
     * 批量删除跟师笔记
     * 
     * @param notesIds 需要删除的跟师笔记主键集合
     * @return 结果
     */
    public int deleteTrainingCadetTeacherNotesByNotesIds(Long[] notesIds);

    /**
     * 删除跟师笔记信息
     * 
     * @param notesId 跟师笔记主键
     * @return 结果
     */
    public int deleteTrainingCadetTeacherNotesByNotesId(Long notesId);

    /**
     * 实体数据补全
     *
     * @param trainingCadetTeacherNotes 实体
     * @param userId       用户id
     * @param crateType    创建类型 1：新增 2：修改
     */
    public void completeData(TrainingCadetTeacherNotes trainingCadetTeacherNotes, Long userId, Integer crateType);
}
